#!/usr/bin/env node

/**
 * Vite依赖修复脚本
 * 解决Element Plus组件加载问题
 * @author Wu.Liang
 * @date 2025-01-30
 */

const fs = require('fs')
const path = require('path')
const { execSync } = require('child_process')

console.log('🔧 开始修复Vite依赖问题...')

// 1. 清理Vite缓存
console.log('📦 清理Vite缓存...')
const viteCachePath = path.join(__dirname, 'node_modules', '.vite')
if (fs.existsSync(viteCachePath)) {
    fs.rmSync(viteCachePath, { recursive: true, force: true })
    console.log('✅ Vite缓存已清理')
} else {
    console.log('ℹ️ Vite缓存不存在，跳过清理')
}

// 2. 清理node_modules
console.log('🗑️ 清理node_modules...')
const nodeModulesPath = path.join(__dirname, 'node_modules')
if (fs.existsSync(nodeModulesPath)) {
    fs.rmSync(nodeModulesPath, { recursive: true, force: true })
    console.log('✅ node_modules已清理')
} else {
    console.log('ℹ️ node_modules不存在，跳过清理')
}

// 3. 清理package-lock.json
console.log('🔒 清理package-lock.json...')
const packageLockPath = path.join(__dirname, 'package-lock.json')
if (fs.existsSync(packageLockPath)) {
    fs.unlinkSync(packageLockPath)
    console.log('✅ package-lock.json已清理')
} else {
    console.log('ℹ️ package-lock.json不存在，跳过清理')
}

// 4. 重新安装依赖
console.log('📥 重新安装依赖...')
try {
    execSync('npm install', { stdio: 'inherit', cwd: __dirname })
    console.log('✅ 依赖安装完成')
} catch (error) {
    console.error('❌ 依赖安装失败:', error.message)
    process.exit(1)
}

// 5. 预构建依赖
console.log('🔨 预构建依赖...')
try {
    execSync('npx vite --force', { stdio: 'inherit', cwd: __dirname })
    console.log('✅ 依赖预构建完成')
} catch (error) {
    console.error('❌ 依赖预构建失败:', error.message)
    process.exit(1)
}

console.log('🎉 Vite依赖修复完成！')
console.log('💡 现在可以运行 npm run dev 启动开发服务器')
